After an integrated circuit is manufactured, it is typically tested both to check that manufacturing defects are not present in the silicon (manufacturing testing), and to verify that it correctly performs its specified function (functional testing). While manufacturing test is done with a tester, functional testing is typically done “in-system,” where the target IC is coupled to other ICs to form a system, and the system is tested with signals that might be expected during the intended use. In general, the input stimuli that the IC receives during such in-system testing are not known in advance and, hence, the expected values of these stimuli cannot be predicted.
In accord with one form of conventional functional testing, different aspects of the IC behavior are checked during its normal at-speed operation, but such testing is typically not automated. Moreover, such testing suffers from the lack of observability of internal IC signals. Assertion checking would be an ideal form of verification for an environment where expected values are not known, because assertions rely on expected relations between signals. However, assertions are not usually implemented in hardware (i.e., built within the IC) because of the high cost of the additional hardware required for a large number of assertions.
In accord with another form of functional testing, diagnostic programs are executed on an embedded processor, in which case the final results out of the IC can be predicted after a sequence of operations.
Once functional testing detects an error, the task that naturally arises next is to locate the root cause of the observed misbehavior. Although integrated circuits are extensively verified before manufacturing, their typically immense complexity often results in logic and timing errors being still discovered in many of the chips tested at-speed in-system. Consequently, a systematic procedure for locating logic errors detected by in-system at-speed functional testing, which is currently not available, is highly desirable.
It is also worth noting that a functional test may fail not because of a logic error but because of a manufacturing defect. Although functional testing is usually preceded by manufacturing testing, manufacturing tests are often not exhaustively complete. Consequently, there may be certain manufacturing defects that escape detection during manufacturing tests. If the functional test detects such a defect, the conventional tester-based diagnosis techniques are not applicable, since it is difficult to reproduce the at-speed functional test on a tester. With in-system testing, on the other hand, a first problem is to determine whether the failure is due to a logic error or to a manufacturing defect. A systematic procedure for locating manufacturing defects detected by in-system functional testing is currently also not available.
The above-mentioned '993 application and the applications to which this '993 relates disclose numerous techniques and advantages of integrated circuits that are constructed with wrapped cores (blocks of the integrated circuit). Specifically, the '101 application discloses a system-on-a-chip (SoC) with configurable wrappers, the '854 and '774 applications disclose assertion checking of SoCs with the use of the configurable wrappers, the '774 and '709 application disclose effectively masking the effects of an error in the SoC by use of the configurable wrapper, and the '993 application discloses a method that enables determining the value of any signal (target signal) in a combinatorial circuit of an SoC that is otherwise unobservable.
When an assertion checking run discovers an error, however, the methods disclosed in the above-identified applications do not identify the particular signal or signals that cause of the error. If discovery of such an error can lead to a correction in the SoC's design then, of course, finding the source of the error (in contradistinction to merely masking its effect) is desirable. It is also desirable to find out whether the error is caused by a manufacturing defect and to locate it, because in such a case there is no need to correct the error, but to enhance the manufacturing test to detect that defect.